<?php
/**
 * CMysqlTableSchema class file.
 * 保存Mysql表的信息, 包含表的主键和外键, 列的情况.
 * <ul>
 * <li>{@link name}</li>
 * <li>{@link rawName}</li>
 * <li>{@link columns}</li>
 * <li>{@link primaryKey}</li>
 * <li>{@link foreignKeys}</li>
 * </ul>
 * @author Huan Song <iphper@yeah.net>
 * @version $Id: CMysqlTableSchema.php 1 2011-06-08 13:56:06Z huan.song $
 * @package system.db.mysql
 * @since 2.0
 */
class CMysqlTableSchema implements IDbTableSchema
{
	/**
	 * @var string 表名.
	 */
	public $name;
	
	/**
	 * @var string 被引用的表名, 可以放在SQL中执行.
	 */
	public $rawName;
	
	/**
	 * @var string 表的主键.
	 */
	public $primaryKey;
	
	/**
	 * @var string 被引用的主键, 可以放在SQL中执行.
	 */
	public $rawPrimaryKey;
	
	/**
	 * @var array 表的外键.
	 */
	public $foreignKeys = array();
	
	/**
	 * @var array 所有列的信息.
	 */
	public $columns = array();
	
	/**
	 * @var string 主键的sequence.
	 */
	public $sequenceName;
	
	/**
	 * @var array 所有默认的值.
	 */
	public $attributeDefaults = array();
	
	/**
	 * @var array 所有列名, 用着查询的SQL语句.
	 */
	public $selectFields = array();
	
	/**
	 * 获取指定列的信息.
	 * @param string $name 列名.
	 * @return CMysqlColumnSchema|null 列信息.
	 */
	public function getColumn($name)
	{
		return isset($this->columns[$name]) ? $this->columns[$name] : null;
	}
	
	/**
	 * @return array 所有的列名.
	 */
	public function getColumnNames()
	{
		return array_keys($this->columns);
	}
}
